..:: Menu ::.. ..:: Lekcja 4: Podstawy Object Pascala część: 7 ::.. ..::Info i Reklamy::..

Moduły

Dotąd wykorzystywaliśmy moduły gotowe, dostarczone wraz z Delphi. Teraz stworzymy swój moduł. Możemy w nim zamieszczać procedury i funkcje, które później będą wykorzystywane w programie. Nowy moduł możesz utworzyć z menu File wybierając New. W oknie, które się pojawi kliknij na ikonę Unit. W edytorze kody pojawi się nowa zakładka. Jej zawartość wygląda tak:
unit Unit1;

interface

implementation

end.
Otóż KAŻDY moduł musi się składać ze słów kluczowych interface oraz implementation. W sekcji Interface wpisuje się tylko nagłówek procedury lub funkcji, czyli jej nazwę. Fachowo nazywa się to deklaracją. W sekcji Implementation natomiast treść procedury/funkcji. Zapisz moduł wybierając z menu File -> Save All. Podaje nazwę modułu - ja podałem nazwę Tools - Delphi stworzył plik Tools.pas. Zauważysz, ze w programie, w miejscu gdzie wypisane są moduły dodany został nowy - nasz:
uses
Windows,
SysUtils,
Dialogs,
Tools in 'Tools.pas';
Dobrze. Zajmijmy się naszym modułem. Doprowadź go do takiej postaci:
unit Tools;

interface

uses Windows;

{ deklaracje }
procedure About;
function DoPotegi(Liczba: Integer) : Integer;

implementation

{ definicje }

function DoPotegi(Liczba: Integer) : Integer;
begin
Result := Liczba * Liczba;
end;

procedure About;
begin
MessageBox(0, '© by A.B.', 'O programie...', MB_OK);
end;

end.
Zapisz swój moduł. Teraz w programie do listy uses możesz dodać nazwę swojego modułu - Tools. W programie możesz wykorzystać procedury, które zadeklarowałeś w swoim module pisząc po prostu nazwę tej procedury.
Musisz wiedzieć, że to co jest zawarte w sekcji implementation modułu nie będzie widoczne dla innych modułów. Znaczy to, że program będzie ciągle wyświetlał błąd, że nie wie co to za procedura, której chcesz użyć. Możesz więc pisać w module procedury bez deklarowania ich w sekcji interface pod warunkiem, że nie chcesz, aby były wykorzystywane w innych modułach.
Dodatkowo masz możliwość umieszczenia w module dwóch słów kluczowych, które są opcjonalne. Są to initialization oraz finalization. Umieszczasz je przed słowem kluczowym end. ( z kropką! ). Po słowie initialization możesz zapisać instrukcje, które będą wykonywane na samym początku, a po finalization są zapisywane instrukcje, które mają być wykonane przed zakończeniem programu.
{ instrukcje modułu... }
initialization
ShowMessage('Rozpoczącie pracy z modułem.');
finalization
ShowMessage('Koniec pracy z modułem.');
end.

Rekordy

Rekordy to taka paczuszka. Jest to jeden typ ( lub zmienna ), która może zawierać w sobie inne zmienne.
type
TDane = record { <-- brak średnika na końcu! }
Imie: String;
Nazwisko: String;
end;
Właśnie zadeklarowałeś nowy typ. Jest to rekord. Zawiera on w sobie inne zmienne. Rekordy mają specyficzną budowę. Deklaruje się je poprzez słowo kluczowe record. Na początku zapewne trudno Ci będzie zrozumieć istotę stosowania rekordów. Sprawdźmy to w praktyce. Na początek trzeba stworzyć zmienną, która będzie wskazywać na rekord:
var Dane : TDane; // zmienna wskazuje na rekord
Następnie należy wypełnić pola rekordu. Cały kod programu wygląda teraz tak:
{
Copyright (c) 2001 - Adam Boduch
}

program rekord;

uses
Windows;

type
TDane = record { <-- brak średnika! }
Imie: String;
Nazwisko: String;
end;

var Dane : TDane; // zmienna wskazuje na rekord

begin
Dane.Imie := 'Adam';
Dane.Nazwisko := 'Boduch';
MessageBox(0, PChar('Nazywam się: ' + Dane.Imie + ' ' + Dane.Nazwisko), 'Hiehie', MB_OK);
end.
Użyliśmy tutaj operatora, który nie został omówiony wcześniej. Operator ten to . Tak kropka... Jest to operator odwołania. W przyszłych rozdziałach operatora tego będziemy używali całkiem często. Za jego pomocą możemy odwołać się do poszczególnych elementów obiektu. W tym wypadku elementem obiektu są zmienne zawarte w rekordzie, a samym obiektem rekord. Tak więc do zmiennych zawartych w rekordzie przypisujemy wartości. Następnie w okienku wartości te są wyświetlone.
W Delphi 5 ( w Delphi 4 także ) zastosowano pewne ułatwienie. Mamy możliwość "podglądu" jakie elementy znajdują się w rekordzie. Wystarczy, że po nazwie obiektu ( tzn., zmiennej, która wskazuje na rekord ) postawimy kropkę i odczekamy parę sekund. Pojawi się takie okienko:
Żeby stworzyć rekord niekoniecznie trzeba deklarować nowy typ. Można to zrobić od razu w zmiennej:
var
Dane : record { <-- brak średnika! }
Imie: String;
Nazwisko: String;
end;
Trzeba jednak uważać, aby nie postawić znaku równości ( = ). Jeżeli deklarujesz rekord jako zmienną to stawiasz znak dwukropka tak jak to zostało pokazane na powyższym kodzie.
Podczas zapisywania rekordów możesz przed słowem record dodać jeszcze jedno - packed. Powoduje ono zmniejszenie rozmiaru jaki zajmuje rekord w pamięci komputera. Różne zmienne zajmuje w pamięci określoną ilość bajtów. W rekordzie dodaje się wszystkie zmienne ( ilość bajtów zajmowanych przez zmienne ) i wiemy ile zajmuje w pamięci rekord. Jeżeli nie użyjesz słowa packed to ta ilość zaokrąglana jest dodatkowo do 8 bajtów. Tak więc uzycie słowa kluczowego packed powoduje pakowanie rekordu.

Instrukcja wiążąca with

Instrukcja ta nie robi nic specjalnego. Po prostu ułatwia programiście pracę. Zamiast pisać:
Dane.Imie := 'Adam';
Dane.Nazwisko := 'Boduch';
Można zastosować instrukcję wiążącą i zmniejszyć ilość wypisanych słów:
with Dane do
begin
Imie := 'Adam';
Nazwisko := 'Boduch';
end;
Wszystkie elementy.
<--- Wstecz | Dalej --->

   
©Copyright by garUs